/**
 * Copyright © 2011,2013 Konstantin Livitski
 * 
 * This file is part of n-Puzzle application. n-Puzzle application is free
 * software; you can redistribute it and/or modify it under the terms of the GNU
 * General Public License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 * 
 * n-Puzzle application contains adaptations of artwork covered by the Creative
 * Commons Attribution-ShareAlike 3.0 Unported license. Please refer to the
 * NOTICE.md file at the root of this distribution or repository for licensing
 * terms that apply to that artwork.
 * 
 * n-Puzzle application is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * n-Puzzle application; if not, see the LICENSE/gpl.txt file of this distribution
 * or visit <http://www.gnu.org/licenses>.
 */
package name.livitski.games.puzzle.android.model;

/**
 * Represents a tile move on the puzzle board. The rules 
 * allow to move only the tiles adjacent to a blank tile.
 * Each move swaps the tile with the blank, effectively
 * moving the blank in one of the four directions.
 * These directions are available as constants of this
 * class.
 */
public enum Move
{
 UP(false, -1), LEFT(true, -1), DOWN(false, 1), RIGHT(true, 1);

 public boolean isHorizontal()
 {
  return horizontal;
 }

 public boolean isVertical()
 {
  return !horizontal;
 }

 public int getAmount()
 {
  return amount;
 }

 @Override
 public String toString()
 {
  return name().toLowerCase() + " move";
 }

 private Move(boolean horizontal, int amount)
 {
  this.horizontal = horizontal;
  this.amount = amount;
 }

 private boolean horizontal; 
 private int amount; 
}
